package com.cictec.middleware.tde.rm.protocol.rm.message;

import java.util.Date;

import com.cictec.middleware.tde.rm.protocol.TerminalMessage;

/**
 * 0x81 下发短语
 * 
 * @author Zhibin
 *
 */
public class Rm0x81PlatformMessage extends TerminalMessage {

	private static final long serialVersionUID = 4576012031013215261L;
	
	/** 【短语类型】0x01 调度指令 */
	public static int MESSAGE_TYPE_COMMOND = 0x01;
	/** 【短语类型】0x02 通知通告 */
	public static int MESSAGE_TYPE_NOTICE = 0X02;
	/** 【短语类型】0x03 提示用语 */
	public static int MESSAGE_TYPE_TIP = 0X03;
	/** 【短语类型】0x04 服务用语 */
	public static int MESSAGE_TYPE_SERVICE = 0X04;
	/** 【短语类型】0x05 广告用语 */
	public static int MESSAGE_TYPE_AD = 0X05;
	/** 【短语类型】 0x06 告警提示（声光提示直到手动确认） */
	public static int MESSAGE_TYPE_ALARM = 0X06;
	/** 【短语类型】0x07 短信提示（只在CP3 界面显示，并存储） */
	public static int MESSAGE_TYPE_SMS = 0X07;

	public static int PLAY_ON_DRIVER_SPEAKER = 1;
	public static int PLAY_ON_INNER_SPEAKER = 2;
	public static int PLAY_ON_OUTER_SPEAKER = 4;

	public static int DISPLAY_ON_DRIVER_LCD = 1;
	public static int DISPLAY_ON_INNER_FRONT = 2;
	public static int DISPLAY_ON_INNER_TAIL = 4;
	public static int DISPLAY_ON_AD_LCD = 8;
	public static int DISPLAY_ON_OUTER_MID_LED = 16;
	public static int DISPLAY_ON_OUTER_TAIL_LED = 32;
	public static int DISPLAY_ON_OUTER_FRONT = 64;

	/** 产生时间 HEX 4 字节 数据内容产生时间 */
	private Date createTime;
	/**
	 * 短语类型 HEX 1 字节 见短语类型表 <br>
	 * 短语类型表 :<br>
	 * 0x01 调度指令<br>
	 * 0x02 通知通告<br>
	 * 0x03 提示用语<br>
	 * 0x04 服务用语<br>
	 * 0x05 广告用语<br>
	 * 0x06 告警提示（声光提示直到手动确认）<br>
	 * 0x07 短信提示（只在CP3 界面显示，并存储）<br>
	 */
	private int messageType;
	/** 应答类型 HEX 1 字节 表示是否需要手动应 答，1 为需要，0 为不需 要，当需要手动应答时 人为确认后需再上传一 条手动应答确认 */
	private int responseType;
	/**
	 * 显示位置 HEX 1 字节 见显示位置表 <br>
	 * 显示位置表【0 为不显示，1 为显示】 ：<br>
	 * 		Bit7 	Bit6 		Bit5 		Bit4 		Bit3 		Bit2 			Bit1 				Bit0<br>
	 * 1 	预留 	车外头牌 LED 车外尾牌 LED 车外腰牌 LED 车内广告 LCD 车内尾部 LED 	车内前部 LED（1） 	驾 驶 员 LCD（1）
	 */
	private int displayOn;
	/**
	 * 声音类型 HEX 1 字节 见声音类型表 <br>
	 * 声音类型表【0 为不播放，1 为播放】 ：<br>
	 * 		Bit7 	Bit6 	Bit5 	Bit4 	Bit3 	Bit2 		Bit1 		Bit0<br>
	 * 0 
	 * 1 	预留 	预留 	预留 	预留 	预留 	车外报站喇叭 车内报站喇叭 	驾驶员专用喇叭 （1）
	 */
	private int voiceType;
	/** 显示次数 HEX 1 字节 显示次数，0xFF 为永久 显示直到接收新的指令 */
	private int displayTimes;
	/** 短语内容长度 HEX 1 字节 序号 8 短语内容的长度 */
	private int contentLength;
	/** 短语内容 ASCII 不定长 数据内容，用 ASCII 码 最长 200 字节 */
	private String content;
	/** 报读语音文件编号 HEX 2 字节 当此字段不为空时，报 读车载终端预存 mp3 */
	private int voiceFileNumber;

	public Rm0x81PlatformMessage(Header header) {
		super(header);
	}

	/** 产生时间 HEX 4 字节 数据内容产生时间 */
	public Date getCreateTime() {
		return createTime;
	}

	/** 产生时间 HEX 4 字节 数据内容产生时间 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/**
	 * 短语类型 HEX 1 字节 见短语类型表 <br>
	 * 短语类型表 :<br>
	 * 0x01 调度指令<br>
	 * 0x02 通知通告<br>
	 * 0x03 提示用语<br>
	 * 0x04 服务用语<br>
	 * 0x05 广告用语<br>
	 * 0x06 告警提示（声光提示直到手动确认）<br>
	 * 0x07 短信提示（只在CP3 界面显示，并存储）<br>
	 */
	public int getMessageType() {
		return messageType;
	}

	/**
	 * 短语类型 HEX 1 字节 见短语类型表 <br>
	 * 短语类型表 :<br>
	 * 0x01 调度指令<br>
	 * 0x02 通知通告<br>
	 * 0x03 提示用语<br>
	 * 0x04 服务用语<br>
	 * 0x05 广告用语<br>
	 * 0x06 告警提示（声光提示直到手动确认）<br>
	 * 0x07 短信提示（只在CP3 界面显示，并存储）<br>
	 */
	public void setMessageType(int messageType) {
		this.messageType = messageType;
	}

	/** 应答类型 HEX 1 字节 表示是否需要手动应 答，1 为需要，0 为不需 要，当需要手动应答时 人为确认后需再上传一 条手动应答确认 */
	public int getResponseType() {
		return responseType;
	}

	/** 应答类型 HEX 1 字节 表示是否需要手动应 答，1 为需要，0 为不需 要，当需要手动应答时 人为确认后需再上传一 条手动应答确认 */
	public void setResponseType(int responseType) {
		this.responseType = responseType;
	}
	/**
	 * 显示位置 HEX 1 字节 见显示位置表 <br>
	 * 显示位置表【0 为不显示，1 为显示】 ：<br>
	 * 		Bit7 	Bit6 		Bit5 		Bit4 		Bit3 		Bit2 			Bit1 				Bit0<br>
	 * 1 	预留 	车外头牌 LED 车外尾牌 LED 车外腰牌 LED 车内广告 LCD 车内尾部 LED 	车内前部 LED（1） 	驾 驶 员 LCD（1）
	 */
	public int getDisplayOn() {
		return displayOn;
	}
	/**
	 * 显示位置 HEX 1 字节 见显示位置表 <br>
	 * 显示位置表【0 为不显示，1 为显示】 ：<br>
	 * 		Bit7 	Bit6 		Bit5 		Bit4 		Bit3 		Bit2 			Bit1 				Bit0<br>
	 * 1 	预留 	车外头牌 LED 车外尾牌 LED 车外腰牌 LED 车内广告 LCD 车内尾部 LED 	车内前部 LED（1） 	驾 驶 员 LCD（1）
	 */
	public void setDisplayOn(int displayOn) {
		this.displayOn = displayOn;
	}
	
	/**
	 * 声音类型 HEX 1 字节 见声音类型表 <br>
	 * 声音类型表【0 为不播放，1 为播放】 ：<br>
	 * 		Bit7 	Bit6 	Bit5 	Bit4 	Bit3 	Bit2 		Bit1 		Bit0<br>
	 * 0 
	 * 1 	预留 	预留 	预留 	预留 	预留 	车外报站喇叭 车内报站喇叭 	驾驶员专用喇叭 （1）
	 */
	public int getVoiceType() {
		return voiceType;
	}
	
	/**
	 * 声音类型 HEX 1 字节 见声音类型表 <br>
	 * 声音类型表【0 为不播放，1 为播放】 ：<br>
	 * 		Bit7 	Bit6 	Bit5 	Bit4 	Bit3 	Bit2 		Bit1 		Bit0<br>
	 * 0 
	 * 1 	预留 	预留 	预留 	预留 	预留 	车外报站喇叭 车内报站喇叭 	驾驶员专用喇叭 （1）
	 */
	public void setVoiceType(int voiceType) {
		this.voiceType = voiceType;
	}

	/** 显示次数 HEX 1 字节 显示次数，0xFF 为永久 显示直到接收新的指令 */
	public int getDisplayTimes() {
		return displayTimes;
	}

	/** 显示次数 HEX 1 字节 显示次数，0xFF 为永久 显示直到接收新的指令 */
	public void setDisplayTimes(int displayTimes) {
		this.displayTimes = displayTimes;
	}

	/** 短语内容长度 HEX 1 字节 序号 8 短语内容的长度 */
	public int getContentLength() {
		return contentLength;
	}

	/** 短语内容长度 HEX 1 字节 序号 8 短语内容的长度 */
	public void setContentLength(int contentLength) {
		this.contentLength = contentLength;
	}

	/** 短语内容 ASCII 不定长 数据内容，用 ASCII 码 最长 200 字节 */
	public String getContent() {
		return content;
	}

	/** 短语内容 ASCII 不定长 数据内容，用 ASCII 码 最长 200 字节 */
	public void setContent(String content) {
		this.content = content;
	}

	/** 报读语音文件编号 HEX 2 字节 当此字段不为空时，报 读车载终端预存 mp3 */
	public int getVoiceFileNumber() {
		return voiceFileNumber;
	}

	/** 报读语音文件编号 HEX 2 字节 当此字段不为空时，报 读车载终端预存 mp3 */
	public void setVoiceFileNumber(int voiceFileNumber) {
		this.voiceFileNumber = voiceFileNumber;
	}

}
